1
Identité vs. Valeur : Comprendre les lvalue et rvalue
AI037Lesson 7
00:00

En C++, chaque expression produit soit une lvalue soit une rvalue. Cette distinction détermine si une expression fait référence à l’ identité (où elle se trouve) ou à sa valeur (ce qu’elle contient).

1. Identité vs. Contenu

Une lvalue (valeur d'emplacement) représente un objet ayant une adresse mémoire persistante. Pensez-y comme une boîte étiquetée en mémoire vive. En revanche, une rvalue (valeur de lecture) est transitoire ; elle représente un résultat temporaire ou une constante littérale qui n’a pas d’adresse accessible au programmeur.

Le ConteneurLvalueAdresse : 0x7FFELes DonnéesRvalueValeur : 42Conversion

2. Transitions fonctionnelles

Alors qu’une lvalue peut agir comme une rvalue (le compilateur récupère simplement la valeur à l’intérieur de la boîte), la situation inverse est interdite. Vous ne pouvez pas utiliser une rvalue là où une lvalue est requise — par exemple, vous ne pouvez pas obtenir l’adresse d’un nombre littéral comme &42 car elle n’a pas d’identité persistante.

$$ \text{Lvalue} \xrightarrow{\text{Conversion}} \text{Rvalue} \quad (\text{Autorisé}) $$

$$ \text{Rvalue} \xrightarrow{\text{Affectation}} \text{Lvalue} \quad (\text{Interdit}) $$

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>